#ifndef CIRCULARQUEUE_H
#define CIRCULARQUEUE_H
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include "HashSet.h"

/* 队列的容量为多少表示多少秒退出 */
#define QUEUE_INITIAL_CAPACITY 60

/* 指针数组 */
typedef HashSet** DataType;
typedef HashSet* EntryType;

typedef struct CircularQueue {
    DataType data;
    int front;
    int rear;
    int size;
    int capacity;
    /* 这里是每个元素的大小的意思 */
    size_t elem_size;

    void (*enqueue)(struct CircularQueue*, EntryType);
    void (*dequeue)(struct CircularQueue*, EntryType);
    bool (*is_empty)(struct CircularQueue*);
    bool (*is_full)(struct CircularQueue*);
    void (*destroy)(struct CircularQueue*);
} CircularQueue;
CircularQueue* create_queue(size_t elem_size);

#endif // !CIRCULARQUEUE_H